home *** CD-ROM | disk | FTP | other *** search
/ 17 Bit Software 2: Collection B / 17Bit_Collection_B.iso / files / 1877.dms / in.adf / Space Maths.AMOS / Space Maths.amosSourceCode < prev    next >
Encoding:
AMOS Source Code  |  1978-02-21  |  6.1 KB  |  213 lines

  1. Screen Open 0,320,200,16,Lowres
  2. Close Workbench 
  3. Global LEVEL,NAME$,OP$,A,B,C,X,ANS,SCORE,XL,RN,RN1,GOES1,FLAG,K
  4. TITLE
  5. STAR:
  6. GNAME
  7. SMATHS
  8. End 
  9. Procedure TITLE
  10. Hide On 
  11. Load Iff "Apd135:smaths/title.iff",1
  12. If Fast Free>0 Then Load "Apd135:smaths/music.abk"
  13. Load "Apd135:smaths/sprites.abk"
  14. If Fast Free>0 Then Music 1
  15. Pen 3 : Paper 0
  16. Locate 12,15
  17. Print "PRESS ANY KEY"
  18. Wait Key 
  19. Music Stop 
  20. Load Iff "Apd135:smaths/game.iff",1
  21. End Proc
  22. Procedure GNAME
  23. '*************** GET ALL USER INFORMATION (NAME,AGE,NUMBER OF SUMS) *******
  24. Say "                                                                  "
  25. Pen 15 : Paper 0
  26. Locate 2,4 : Print "PLEASE PRINT"
  27. Locate 2,6 : Print "YOUR NAME "
  28. Locate 2,8 : Input NAME$
  29. C$=Left$(NAME$,1)
  30. C$=Upper$(C$)
  31. Left$(NAME$,1)=C$
  32. NAME$=NAME$+"."
  33. TALK$="hello "+NAME$
  34. Say TALK$
  35. BLANK
  36. AGAIN2:
  37. Say "how old are you."
  38. Locate 2,4 : Print "How old are"
  39. Locate 2,6 : Print "you "
  40. Locate 2,8 : Print " ";
  41. Input AGE$ : HOTKEY[AGE$] : If FLAG=1 Then Goto AGAIN2
  42. AGE=K
  43. If AGE<6 Then LEVEL=1
  44. If AGE>5 and AGE<9 Then LEVEL=2
  45. If AGE>8 and AGE<13 Then LEVEL=3
  46. If AGE>12 and AGE<16 Then LEVEL=4
  47. If AGE>15 Then LEVEL=5
  48. BLANK
  49. AGAIN3:
  50. Say "how many sums would you like.         "
  51. Locate 2,4 : Print "How many sums"
  52. Locate 2,6 : Print "Do you want"
  53. Locate 2,10 : Print " ";
  54. Input GOES1$ : HOTKEY[GOES1$] : If FLAG=1 Then Goto AGAIN3
  55. GOES1=K
  56. End Proc
  57. Procedure BLANK
  58. '************************************************
  59. '**************** ERASES THE BLACKBOARD *********
  60. '************************************************
  61. For Z=4 To 29
  62. Locate 2,Z
  63. Print "             "
  64. Next Z
  65. End Proc
  66. Procedure RANDOM
  67. '************ Get a Random Operator ***************
  68. Randomize Timer
  69. OP$="" : X=0
  70. While OP$=""
  71. X=Rnd(3)+1
  72. If X=1 Then OP$=" -"
  73. If X=2 Then OP$=" +"
  74. If X=3 and LEVEL>2 Then OP$=" *"
  75. If X=4 and LEVEL>2 Then OP$=" /"
  76. Wend 
  77. '
  78. '********* Get RANDOM NUMBERS For SUMS ************
  79. REP:
  80. If LEVEL=1 Then A=Rnd(4)+1 : B=Rnd(4)+1
  81. If LEVEL=2 Then A=Rnd(5)+5 : B=Rnd(5)+5
  82. If LEVEL=3 Then A=Rnd(40)+10 : B=Rnd(40)+10
  83. If LEVEL=4 Then A=Rnd(90)+10 : B=Rnd(90)+10
  84. If LEVEL=5 Then A=Rnd(1000)+10 : B=Rnd(100)+10
  85. If OP$=" -" and A<B Then Goto REP
  86. If OP$=" /" Then DIV
  87. End Proc
  88. Procedure DIV
  89. '**************** Routine to Ensure Number A is Divisable by number B without any remainder
  90. AGAIN:
  91. A=Rnd(143)+1 : B=Rnd(11)+1
  92. D=A mod B
  93. If D<>0 Then Goto AGAIN
  94. End Proc
  95. Procedure SCORE
  96. '************************************************
  97. '********** PRINT SCORE TO SCREEN ***************
  98. '************************************************
  99. Locate 2,29 : Print "SCORE ";SCORE
  100. End Proc
  101. Procedure SCORECHECK
  102. '************************************************
  103. '********* CHECKS SCORE FOR WHEN TO GET ALIEN ***
  104. '************************************************
  105. SCCH=SCORE mod RN1
  106. If SCCH=0 Then RN=Rnd(200) : SHOT
  107. End Proc
  108. Procedure SMATHS
  109. '************************************************* 
  110. '*********** MAIN MATHS ROUTINE ****************** 
  111. '************************************************* 
  112. BLANK
  113. SCORE=0 : RN1=5 : GOES=0 : Rem ****** RESETS GAME VARIABLES 
  114. BEG:
  115. GOES=GOES+1 : If GOES=GOES1+1 Then FIN : Goto STAR
  116. RANDOM
  117. If X=1 Then C=A-B
  118. If X=2 Then C=A+B
  119. If X=3 Then C=A*B
  120. If X=4 Then C=A/B
  121. '************ PRINT SUMS TO SCREEN ****************
  122. AGAIN1:
  123. Locate 2,4
  124. Print A;OP$;B
  125. Locate 2,6
  126. Print "What is the"
  127. Locate 2,8
  128. '**************************************************
  129. Input "Answer = ";ANS$ : HOTKEY[ANS$] : If FLAG=1 Then Goto AGAIN1 : Rem *** IF NOT A NUMBER KEY PRESSED REPRINT SUM  
  130. If K=C Then Locate 2,10 : Print "CORRECT" : Wait 50 : BLANK : SCORE=SCORE+1 : SCORE : SCORECHECK : Goto BEG
  131. Locate 2,16 : Print "THAT IS WRONG"
  132. Locate 2,18 : Print "THE CORRECT "
  133. Locate 2,20 : Print "ANSWER WAS::"
  134. Locate 2,22 : Print "   ";C
  135. Locate 2,24 : Print "PRESS A KEY" : Wait Key : BLANK : Goto BEG : 
  136. End Proc
  137. Procedure HOTKEY[K$]
  138. '******************* ENSURES ONLY NUMBER KEYS ARE PRESSED **************** 
  139. FLAG=0
  140. If Asc(K$)<48 or Asc(K$)>57 Then Locate 2,10 : BLANK : FLAG=1 : Rem****IF ANSWER ISN~T A NUMBER WAIT *****'
  141. K=Val(K$) : Rem**** CHANGE STRING VARIABLE TO NUMBER VARIABLE FOR USE IN MAIN PROG (SMATHS)
  142. End Proc[K]
  143. Procedure SHOT
  144. '*************************************************** 
  145. '**************    GRAPHICS GAME    **************** 
  146. '*************************************************** 
  147. Say "shoot the alien for extra bownus poynts.                       "
  148. Hide On 
  149. Get Sprite Palette %11111111111111110000000000000000
  150. Make Mask 
  151. XL=260 : SX=435 : SY=50 : DR=1 : Y=280 : L=3
  152. REP1:
  153.  If Jleft(1) Then XL=XL-1
  154.  If Jright(1) Then XL=XL+1
  155.  Sprite 0,XL,280,1
  156.  If XL<260 Then XL=260
  157.  If XL>435 Then XL=435
  158.  Sprite 4,SX,SY,3
  159.  For COUNT=1 To RN : Next COUNT
  160.  If DR=1 Then Dec SX
  161.  If DR=0 Then Inc SX
  162.  If SX<261 Then DR=0
  163.  If SX>435 Then DR=1
  164.  If Fire(1)=-1 Then SARA=1 : Shoot 
  165.  If SARA<>1 Then Goto REP1
  166. Sprite 2,XL,Y,2
  167. C=Sprite Col(4)
  168. If C=-1 Then Boom : Sprite Off 2 : Sprite 4,XL,SY,4 : Wait 50 : Sprite Off 4 : SCORE=SCORE+10 : SCORE : Goto SKIP1
  169. Dec Y
  170. If Y<>26 Then Goto REP1
  171. SKIP1:
  172.  SARA=0 : Y=280 : Dec L
  173. If L<>0 Then Goto REP1
  174. Sprite Off 
  175. RN1=Rnd(10)+5
  176. End Proc
  177. Procedure FIN
  178. '************************************************
  179. '******* GAME OVER AND START AGAIN    ***********
  180. '************************************************
  181. BLANK
  182. Locate 2,4 : Print "Your game"
  183. Locate 2,6 : Print "Is over."
  184. Locate 2,8 : Print "You answered"
  185. Locate 2,10 : Print "";GOES1
  186. Locate 2,12 : Print " Questions"
  187. Locate 2,14 : Print "And scored"
  188. Locate 2,16 : Print "   ";SCORE
  189. Locate 2,18 : Print "PRESS 'Y'"
  190. Locate 2,20 : Print "TO PLAY AGAIN"
  191. Locate 2,22 : Print "OR 'N' TO END"
  192. Do 
  193. N=Key State(54) : If N=-1 Then End 
  194. Y=Key State(21) : If Y=-1 Then Exit 
  195. Loop 
  196. Clear Key 
  197. BLANK
  198. End Proc
  199. '
  200. '*********************** VARIABLE LIST ***************** 
  201. 'NAME$ 
  202. 'AGE 
  203. 'LEVEL 
  204. 'op$          ****** Operator e.g. - + * / 
  205. 'a            ****** first number
  206. 'b            ****** second  
  207. 'c            ****** correct answer
  208. 'ans          ****** users answer
  209. 'scch         ****** determines when to go to graphic game 
  210. 'rn1          ****** determines when to go to graphic game also
  211. 'rn           ****** holds s random speed factor for alien 
  212. 'goes1        ****** holds how many goes you want  
  213. 'goes         ****** holds how many goes you've had